<template>
  <div class="app-container">
    <div style="margin-bottom: 10px;">
      <el-button
        @click="dialogVisible = true"
        type="primary"
        size="mini"
        icon="el-icon-download"
      >
        导入Excel
      </el-button>

      <el-button
        @click="exportExcel()"
        type="primary"
        size="mini"
        icon="el-icon-upload2"
      >
        导出Excel
      </el-button>
    </div>

    <el-dialog title="数据字典导入" :visible.sync="dialogVisible" width="30%">
      <el-form>
        <el-form-item label="请选择Excel文件">
          <el-upload
            :auto-upload="true"
            :multiple="false"
            :limit="1"
            :on-exceed="fileUploadExceed"
            :on-success="fileUploadSuccess"
            :on-error="fileUploadError"
            :action="BASE_API + '/admin/core/dict/import'"
            name="file"
            accept="application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
          >
            <el-button size="small" type="primary">点击上传</el-button>
          </el-upload>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">
          取消
        </el-button>
      </div>
    </el-dialog>

    <el-table :data="dictList" :load="getChildren" row-key="id" border lazy>
      <el-table-column label="名称" align="left" prop="name"/>
      <el-table-column label="编码" prop="dictCode"/>
      <el-table-column label="值" prop="value"/>
    </el-table>
  </div>
</template>
<script>
  // 这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  // 例如: import《组件名称》from'《组件路径》';
  import dictApi from '@/api/core/dict'

  export default {
    // import引入的组件需要注入到对象中才能使用
    components: {},
    props: {},
    data() {
      // 这里存放数据
      return {
        dialogVisible: false, //文件上传对话框是否显示
        BASE_API: process.env.VUE_APP_BASE_API, //获取后端接口地址
        dictList: []//数据字典列表
      }
    },
    // 计算属性类似于data概念
    computed: {},
    // 监控data中的数据变化
    watch: {},
    // 方法的集合
    methods: {
      // 获取数据字典列表
      getDictList() {
        dictApi.getDictListByParentId(1).then(response => {
          this.dictList = response.data.list
        }).catch(error => {
          this.$message = error.message
        })
      },

      /**
       * 获取子级数据
       */
      getChildren(tree, treeNode, resolve) {
        dictApi.getDictListByParentId(tree.id).then(response => {
          resolve(response.data.list);
        });
      },

      // 上传多于一个文件时
      fileUploadExceed() {
        this.$message.warning('只能选取一个文件')
      },

      //上传成功回调
      fileUploadSuccess(response) {
        if (response.code === 0) {
          this.$message.success('数据导入成功')
          this.dialogVisible = false
          this.getDictList();
        } else {
          this.$message.error(response.message)
        }
      },

      //上传失败回调
      fileUploadError(error) {
        this.$message.error('数据导入失败')
      },

      //到处Excel
      exportExcel() {
        window.location.href = this.BASE_API + `/admin/core/dict/export`
      }
    },
    // 生命周期-创建完成(可以访问当前this实例
    created() {
      this.getDictList();
    },
    // 生命周期-挂载完成(可以访问poM元素
    mounted() {

    },
    // 生命周期-创建之前
    beforeCreate() {
    },
    // 生命周期-挂载之前
    beforeMount() {
    },
    // 生命周期-更新之前
    beforeUpdate() {
    },
    // 生命周期-更新之后
    updated() {
    },
    // 生命周明-销毁之前
    beforeDestroy() {
    },
    // 生命周期-销毁完成
    destroyed() {
    },
    // 如果页面有keep- alive缓存功能,这个函数会触发
    activated() {
    }
  }
</script>
<style scoped>

</style>
